#ifndef __ABSTRACT_BUILDER_HPP__
#define __ABSTRACT_BUILDER_HPP__

#include "product.hpp"

class AbstractBuilder {
public:
	virtual ~AbstractBuilder() { cout<<__func__<<endl; }
	virtual void buildCoolDish(const string &name) = 0;
	virtual void buildDrink(const string &name) = 0;
	virtual void buildRice(const string &name) = 0;
	virtual Product *getProduct() = 0;
protected:
	AbstractBuilder()  { cout<<__func__<<endl; }
};

#endif /* end of include guard */
